Pandas 轴旋转stack和unstack
pandas 的 DataFrame 的轴旋转操作,stack
和 unstack
首先,要知道以下五点:
stack
:将数据的列“旋转”为行unstack
:将数据的行“旋转”为列stack和unstack
默认操作为最内层stack
和unstack
默认旋转轴的级别将会成果结果中的最低级别(最内层)stack
和unstack
为一组逆运算操作
- 创建DataFrame,行索引名为state,列索引名为number
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(6).reshape((2, 3)),
index=pd.Index(['Ohio', 'Colorado'], name='state'),
columns=pd.Index(['one', 'two', 'three'], name='number'))
data
- 将DataFrame的列旋转为行,即
stack
操作。
从结果来理解上述点4stack
操作后将列索引number旋转为行索引,并且置于行索引的最内层(外层为索引state),也就是将旋转轴(number)的结果置于 最低级别。
- 将DataFrame的行旋转为列,即
unstack
操作。
result.unstack()
unstack
操作默认将内层索引number旋转为列索引。
同时,也可以指定分层级别或者索引名称来指定操作级别,下面做法同样会得到上面的结果。
stack
和unstack
逆运算
s1 = pd.Series([0,1,2,3],index=list('abcd'))
s2 = pd.Series([4,5,6],index=list('cde'))
data2 = pd.concat([s1,s2],keys=['one','two'])
data2
data2.unstack()
data2.unstack().stack()
参考